package edu.njfu.learnkotlin

fun main() {

    /**
     * 1. lambda表达式的第一种形式
     *  val variable:(type,type,..)->Type={
     *      v1,v2,...->
     *   }
     *   (type1,type2...)->type3 相当于类型
     *   =右边相当于lambda表达式的实现{}
     *   v1,v2,...  相当于形参
     *   ->右边相当于函数体
     *
     */
    //求1~n之和
    val sumN:(Int)->Int={
        n->
        var sum:Int=0
        for(i in 1..n){
            sum+=i
        }
        //lambda表达式最后一行是返回值
        sum
    }
    println(sumN(100))
    //求两个数最大值
    val max1:(Int,Int)->Int={
        n,m->
        if(n>m){
            n
        }else{
            m
        }
    }
    println(max1(3, 4))

    /**
     * lambda第二种形式
     * val:variable={
     *  n1:Type,n2:Type->
     * }
     * 一对大括号，括号内部有一个箭头 ，箭头左边是形参，右边是函数体，
     * 最后一行是函数的返回值
     */

    var sumN2={
            n:Int->
        var sum=0
        for(i in 1..n){
            sum+=i
        }
        sum
    }
    println(sumN2(100))

}